package com.snail.clouds.storage.entity;

import lombok.Data;

import java.util.Date;

/**
 * 云文件信息
 */
@Data
public class CloudFile {

    /**
     * 文件ID
     */
    private String id;
    
    /**
     * 文件名
     */
    private String name;
    
    /**
     * 文件大小（字节）
     */
    private long size;
    
    /**
     * MD5哈希
     */
    private String md5;
    
    /**
     * 创建时间
     */
    private Date createTime;
    
    /**
     * 修改时间
     */
    private Date updateTime;
    
    /**
     * 是否为文件夹
     */
    private boolean directory;
    
    /**
     * 父文件夹ID
     */
    private String parentId;
    
    /**
     * 小图预览URL
     */
    private String smallUrl;
    
    /**
     * 大图预览URL
     */
    private String largeUrl;

    /**
     * 兼容性字段 - 文件ID
     * @deprecated 使用 {@link #id} 替代
     */
    @Deprecated
    public String getFileId() {
        return id;
    }

    /**
     * 兼容性字段 - 文件ID
     * @deprecated 使用 {@link #setId(String)} 替代
     */
    @Deprecated
    public void setFileId(String fileId) {
        this.id = fileId;
    }

    /**
     * 兼容性字段 - 是否为文件夹
     * @deprecated 使用 {@link #isDirectory()} 替代
     */
    @Deprecated
    public boolean isFolder() {
        return directory;
    }

    /**
     * 兼容性字段 - 是否为文件夹
     * @deprecated 使用 {@link #setDirectory(boolean)} 替代
     */
    @Deprecated
    public void setFolder(boolean folder) {
        this.directory = folder;
    }

    /**
     * 兼容性字段 - 创建时间
     * @deprecated 使用 {@link #getCreateTime()} 替代
     */
    @Deprecated
    public Date getCreated() {
        return createTime;
    }

    /**
     * 兼容性字段 - 创建时间
     * @deprecated 使用 {@link #setCreateTime(Date)} 替代
     */
    @Deprecated
    public void setCreated(Date created) {
        this.createTime = created;
    }

    /**
     * 兼容性字段 - 修改时间
     * @deprecated 使用 {@link #getUpdateTime()} 替代
     */
    @Deprecated
    public Date getModified() {
        return updateTime;
    }

    /**
     * 兼容性字段 - 修改时间
     * @deprecated 使用 {@link #setUpdateTime(Date)} 替代
     */
    @Deprecated
    public void setModified(Date modified) {
        this.updateTime = modified;
    }

    /**
     * 兼容性字段 - 修改时间
     * @deprecated 使用 {@link #getUpdateTime()} 替代
     */
    @Deprecated
    public Date getModifiedTime() {
        return updateTime;
    }

    /**
     * 兼容性字段 - 修改时间
     * @deprecated 使用 {@link #setUpdateTime(Date)} 替代
     */
    @Deprecated
    public void setModifiedTime(Date modifiedTime) {
        this.updateTime = modifiedTime;
    }

    /**
     * 兼容性字段 - 创建时间
     * @deprecated 使用 {@link #getCreateTime()} 替代
     */
    @Deprecated
    public Date getCreatedTime() {
        return createTime;
    }

    /**
     * 兼容性字段 - 创建时间
     * @deprecated 使用 {@link #setCreateTime(Date)} 替代
     */
    @Deprecated
    public void setCreatedTime(Date createdTime) {
        this.createTime = createdTime;
    }

    public CloudFile() {
    }

    public CloudFile(String id, String name, long size, String md5, Date createTime, Date updateTime,
                     boolean directory, String parentId, String smallUrl, String largeUrl) {
        this.id = id;
        this.name = name;
        this.size = size;
        this.md5 = md5;
        this.createTime = createTime;
        this.updateTime = updateTime;
        this.directory = directory;
        this.parentId = parentId;
        this.smallUrl = smallUrl;
        this.largeUrl = largeUrl;
    }
}